[Scia Reto](https://sciareto.org) mind map   
> __version__=`1.1`,generatorId=`com.igormaznitsa:idea-mindmap:intellij-2022.33.0-IntelliJ IDEA`
---

# 数据的表示
- NOTE
<pre>计算机内无减法运算器，所有减法视为加法进行运算</pre>

## 进制表示

### 二进制，数字后加B，例如：110 B = 6

### 10进制，数字后无符号

### 十六进制，数字后加H，例如：90 H = 144

#### 转换二进制

#### 转换十进制

#### 反推补码

## 原码

### 原码的最高位是符号位，0代表正数，1代表负数

### 0的原码表示方式有两种：\+0 = 0 0000000；\(\-0\)=1 0000000

### 只能做加法运算，不能做减法运算

## 反码

### 为了解决原码无法进行减法运算的问题

### 正数的反码，等于原码

### 反码与正数进行加法运算后，需要将结果再进行反码运算

### 反码不能与反码进行运算，即 \-3 \+ \-3

### 负数的反码，就是除了符号位外，其他位按位取反

#### 举例，原码转换：<br/><br/>5的原码 0 101<br/>5的反码 0 101<br/><br/>\-3的原码 1 011<br/>\-3的反码 1 100
> align=`left`


#### 举例： 2 \+ \-3
> align=`left`


### 0的反码有两种形式：\(\+0\) = 0 0000000；\(\-0\) 1 1111111

## 补码

### 为了解决原码与补码的两个问题

### 正数的补码等于它的原码

### 负数的补码等于反码\+1，或者等于：\(2^机器字节长 \- |负数|\)的原码

#### 示例1：<br/>\-6的原码：1 0110<br/>\-6的反码：1 1001<br/>\-6的补码：1 1010 = 1 0101 \+ 0 0001
> align=`left`


#### 示例2：<br/>\-6的补码 = \(2^5 \- 6\) = 26<br/>26的原码 = 1 1010
> align=`left`


### 0有唯一的编码：\(\+0\)= 0 000；\(\-0\)=0 000

### 补码计算：若机器字长位6，计算11 \- 4

#### 1

### 必须有位数闲置，运算过程中出现溢出位数则直接舍弃

## 移码

### 补码的符号位取反

### 作用：主要用途是表示浮点数的指数（阶码）

## 总结

### |     | 正数                           | 负数                           |<br/>|\-\-\-\-\-|\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-|\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-|<br/>| 原码  | 最高位为符号位0表示正号，其他位存放该数的二进制的绝对值 | 最高位为符号位1表示负号，其他位存放该数的二进制的绝对值 |<br/>| 反码  | 等于原码                         | 按它的原码，除符号位外，按位取反             |<br/>| 补码  | 等于原码                         | 反码\+1或\(2^机器字长\+负数\)的原码          |<br/>| 移码  | 补码的符号位取反                     | 补码的符号位取反                     |
> align=`left`


## 浮点数

### 浮点数的表现形式：N = 位数 \* 基数^阶码\(指数\)

#### 基数根据进制确定，二进制为2、十进制为10、十六进制为16

#### 科学计数法

### 浮点数的表示格式：阶符 \+ 阶码\(移码\) \+ 数符 \+ 位数\(补码\) 

### 尾数：小数，用补码表示，位数决定数的有效精度，位数越多精度越高

### 阶码：整数，用移码表示，位数决定数的表示范围，位数越多范围越大

### 计算过程

#### 1\. 对阶

##### 对阶时，小数向大数看齐

##### 对阶是通过较小数的尾数右移实现的

##### 举例： 3\.125 \* 10^5 \+ 1\.5 \* 10^3<br/>     = 3\.125 \* 10^5 \+ 0\.015 \* 10^5<br/>     = 3\.14 \* 10^5
> align=`left`


#### 2\. 尾数计算

#### 3\. 结果格式化
